Some computing devices are configured to perform both relatively simple functions, and relatively complex functions. The operating systems for these computing devices tend to have long boot-up times to prepare for running the complex functions. This, of course, delays the start time for performing the relatively simple functions until the whole operating system is booted up.
Some car information systems are used to execute certain software in a short amount of time, for example within 50-100 msec after power-on. Such software may include in-vehicle network software, and other systems software for powering up the vehicle. Operating systems (OS) such as Windows® CE and Linux® have difficulty booting in this amount of time, because of the time taken up by dynamic creation of processes, threads, synchronization objects, work memories, etc. On the other hand, some real-time operating systems (RTOS) have fast boot up performance, because tasks, synchronization objects and work memories are statically created and initialization can be done very quickly. However, RTOS lack the flexibility and scalability to handle complex and high-performance features found in some car information systems.
One approach that has been proposed to gain the benefits of both a dynamic multithreaded OS and an RTOS is to use two control processing units (CPUs). One CPU may be configured to execute an RTOS, and the other may be configured to execute a generic OS, or an RTOS. However, using two CPUs may be cost prohibitive, and it may be difficult to coordinate tasks running on each CPU.
Another proposed approach is to use a hybrid OS. A hybrid OS may enable two different operating systems to run on a single CPU. An RTOS may be used for a fast boot, and a generic OS may be used for flexibility in a hybrid OS system.
However, there are several drawbacks with the hybrid OS approach. For example, the RTOS and the generic OS may have different synchronization mechanisms. This may be because the generic OS may have a richer synchronization mechanism than the RTOS. Therefore rich scheduling mechanisms, such as priority inheritance, cannot be utilized in synchronization between tasks in the different OSs. Other drawbacks may include additional task switch overhead to schedule for each OS, increased developer training costs, or development tools not working properly. For example breaking at a task in one OS may corrupt the debugger connection of the other OS.